#include <iostream>
using namespace std;
const int N=3e5+10;
int p[N];
int Find(int a)
{
    if(p[a]!=a) p[a]=Find(p[a]);
    return p[a];
}
void add(int a,int b)
{
    int fa=Find(a);
    int fb=Find(b);
    if(fa!=fb)
    {
        p[fb]=fa;
    }
}
void solve()
{
    int f=1;
    int n;
    cin>>n; 
    for(int i=1;i<=2e5+1;i++)
    {
        p[i]=i;
    }
    for(int i=1;i<=n;i++)
    {
        int e,x1,x2;
        scanf("%d %d %d",&x1,&x2,&e);
        if(e==1)
        {
            if(Find(x1+10000)==Find(x2) || Find(x1)==Find(x2+n))
            {
                f=0;
            }
            else
            {
                add(x1,x2);
                add(x1+n,x2+n);
            }
        }
        else
        {
            if(Find(x1)==Find(x2))
            {
                f=0;
            }
            else
            {
                add(x1,x2+n);
                add(x1+n,x2);
            }
        }
    }
    if(f) cout<<"YES";
    else cout<<"NO";
    cout<<endl;
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        solve();
    }
    return 0;
}
